package com.laopan.wxpay.bean.refund;

import com.google.gson.annotations.SerializedName;

import java.util.List;

/**
 * @author laopan
 * @className RefundResult
 * @date 2021/3/8 16:31
 */

public class RefundResult {
    /**
     * 微信支付退款号
     */
    @SerializedName("refund_id")
    private String refundId;

    /**
     * 商户退款单号
     */
    @SerializedName("out_refund_no")
    private String outRefundNo;

    /**
     * 微信支付订单号
     */
    @SerializedName("transaction_id")
    private String transactionId;

    /**
     * 商户订单号
     */
    @SerializedName("out_trade_no")
    private String outTradeNo;

    /**
     * 退款渠道
     * 枚举值：
     * ORIGINAL：原路退款
     * BALANCE：退回到余额
     * OTHER_BALANCE：原账户异常退到其他余额账户
     * OTHER_BANKCARD：原银行卡异常退到其他银行卡
     */
    private String channel;

    /**
     * 退款入账账户
     * 取当前退款单的退款入账方，有以下几种情况：
     * 1）退回银行卡：{银行名称}{卡类型}{卡尾号}
     * 2）退回支付用户零钱：支付用户零钱
     * 3）退还商户：商户基本账户商户结算银行账户
     * 4）退回支付用户零钱通：支付用户零钱通。
     */
    @SerializedName("user_received_account")
    private String userReceivedAccount;

    /**
     * 退款成功时间
     */
    @SerializedName("success_time")
    private String successTime;

    /**
     * 退款创建时间
     */
    @SerializedName("create_time")
    private String createTime;

    /**
     * 退款状态
     */
    private String status;

    /**
     * 资金账户
     */
    @SerializedName("funds_account")
    private String fundsAccount;

    /**
     * 金额信息
     */
    private RefundAmountResult amount;

    @SerializedName("promotion_detail")
    private List<PromotionDetail> promotionDetail;

    public String getRefundId() {
        return refundId;
    }

    public void setRefundId(String refundId) {
        this.refundId = refundId;
    }

    public String getOutRefundNo() {
        return outRefundNo;
    }

    public void setOutRefundNo(String outRefundNo) {
        this.outRefundNo = outRefundNo;
    }

    public String getTransactionId() {
        return transactionId;
    }

    public void setTransactionId(String transactionId) {
        this.transactionId = transactionId;
    }

    public String getOutTradeNo() {
        return outTradeNo;
    }

    public void setOutTradeNo(String outTradeNo) {
        this.outTradeNo = outTradeNo;
    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getUserReceivedAccount() {
        return userReceivedAccount;
    }

    public void setUserReceivedAccount(String userReceivedAccount) {
        this.userReceivedAccount = userReceivedAccount;
    }

    public String getSuccessTime() {
        return successTime;
    }

    public void setSuccessTime(String successTime) {
        this.successTime = successTime;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getFundsAccount() {
        return fundsAccount;
    }

    public void setFundsAccount(String fundsAccount) {
        this.fundsAccount = fundsAccount;
    }

    public RefundAmountResult getAmount() {
        return amount;
    }

    public void setAmount(RefundAmountResult amount) {
        this.amount = amount;
    }

    public List<PromotionDetail> getPromotionDetail() {
        return promotionDetail;
    }

    public void setPromotionDetail(List<PromotionDetail> promotionDetail) {
        this.promotionDetail = promotionDetail;
    }
}
